Field of the Invention
Embodiments of the present invention relate generally to computer processing and, more specifically, to automated techniques for designing programmed electronic devices.
Description of the Related Art
Decreases in prices and increases in the availability of electronics have led to a proliferation of electronic devices that are programmed to execute different customized behaviors. Programmed electronic devices are commonly used in home automation systems, industrial safety systems, and interactive toys, to name a few. For example, a security monitor can include a programmable electronic device that sends a short message service (SMS) message to a predetermined phone number whenever a proximity sensor detects an approaching object. In another example, a teddy bear can include a programmable electronic device that rocks the teddy bear in response to any sound that exceeds a predetermined threshold.
Designing a programmed electronic device is typically a complex, multi-step process. First, the designer defines the high-level behavior for the programmed electronic device. Subsequently, the designer identifies and purchases multiple components (e.g., sensors, actuators, microcontrollers, etc.) and assembles the components into a circuit. The designer then writes firmware to control the operation of the circuit. Finally, the designer complies and uploads the firmware to the circuit. Accordingly, designing programmed electronic devices usually requires significant technical knowledge of components, circuitry, and programming. A lack of knowledge in one or more of these areas can discourage potential designers from attempting to design programmed electronic devices.
Certain conventional design tools exist that may be used during certain steps of the design process to reduce the breadth of technical knowledge required to successfully design programmed electronic devices. However, these design tools typically require specialized knowledge and/or have limited applicability. For example, some electronics prototyping kits enable users to construct functional circuits based on proprietary components. However, being able to efficiently develop functional circuits via a prototyping kit oftentimes requires in-depth knowledge of the prototyping kit and familiarity with the associated proprietary components. Further, the resulting functional circuits are limited to the topologies supported by the prototyping kit and the functionality provided by the proprietary components.
As the foregoing illustrates, what is needed in the art are more effective techniques for designing programmed electronic devices.